#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author   : Moty
# @Time     : 2024/10/22 17:11
# @File     : dateTime.py
# @Project  : CSPT
from datetime import datetime, timedelta


def parse_cp56time2a(data):
    data = bytes.fromhex(data)

    if len(data) != 7:
        raise ValueError("CP56Time2a data should be 7 bytes long")

    # 解析毫秒
    milliseconds = int.from_bytes(data[0:2], byteorder='little') & 0xFFFF
    # 解析分钟
    minutes = data[2] & 0x3F  # 低6位表示分钟，第7位是无效位，需忽略
    invalid_minutes = (data[2] & 0x80) >> 7  # 第7位为无效位
    # 解析小时
    hours = data[3] & 0x1F  # 低5位表示小时，其他位忽略
    # 解析日期（天）
    day = data[4] & 0x1F  # 低5位表示天
    # 解析月
    month = data[5] & 0x0F  # 低4位表示月份
    # 解析年份
    year = (data[6] & 0x7F) + 2000  # 低7位表示年份，从2000年开始

    # 构造时间
    dt = datetime(year, month, day, hours, minutes) + timedelta(milliseconds=milliseconds)

    # 格式化时间
    formatted_time = dt.strftime('%Y-%m-%d %H:%M:%S')
    return formatted_time


# # 将16进制字符串转换为字节
# hex_str = "98B70E11100314"
# data = bytes.fromhex(hex_str)
#
# # 解析并格式化时间
# formatted_time = parse_cp56time2a(data)
# print(formatted_time)
